package com.aeolia.dao;

import com.aeolia.domain.QueryVo;
import com.aeolia.domain.User;

import java.util.List;

/**
 * @InterfaceName UserDao
 * @Description: user实体类接口
 * @Author 姚金鑫
 * @CreateDate 2021/3/10 17:50
 * @Version 1.0
 */
public interface UserDao {

    /**
     * 查询所有User信息
     *
     * @return
     */
    List<User> findAll();

    /**
     * 添加一个User
     *
     * @param user
     */
    void saveUser(User user);

    /**
     * 修改一个User
     *
     * @param updateUser
     */
    void updateUser(User updateUser);

    /**
     * 删除一个User
     *
     * @param deleteId
     */
    void deleteUser(Integer deleteId);

    /**
     * 根据id查询一个User
     *
     * @return
     */
    User findById(Integer findId);

    /**
     * 根据username模糊查询User信息
     *
     * @return
     */
    List<User> findByName(String name);

    /**
     * 查询总user数
     */
    int findTotal();

    /**
     * 根据查询条件模糊查询User
     */
    List<User> findByVo(QueryVo vo);

    /**
     * 根据查询条件动态拼接SQL语句
     *
     * @param vo
     * @return
     */
    List<User> findUserByIds(QueryVo vo);

    /**
     * 查询所有User并包含Account信息
     * @return
     */
    List<User> findAllUserIncludeAccount();
}
